Java로 세션 생성하기

✒️ 2025-06-24 10:16 내용 수정


Session

세션
저장 위치 웹 서버
종료 시점 서버에서 지정한 기간
클라이언트와의 상호작용이 없을 때
연결 종료 요청(ex. 로그아웃) 수신 시
데이터 크기 제한 없음
리소스 서버의 리소스
보안 서버에 저장되어 상대적 안정적.
서버 공격 시에는 어쩔 수 없음
목적 상태 유지, 사용자 인증, 개인화

Session 객체

<%
    // 세션에 값 저장
    session.setAttribute("userId", "hong123");

    // 세션에서 값 꺼내기
    String userId = (String) session.getAttribute("userId");

    // 세션에서 값 삭제
    session.removeAttribute("userId");

    // 세션 종료 (로그아웃 등)
    session.invalidate();
%>

메서드

메서드 설명
String getId() 세션에 할당된 고유 Id를 반환
Object getAttribute(String name) 세션 속성 이름이 name인 속성값을 Object형으로 반환.
사용시 반드시 형변환을 해야 함
setAttribute(String name, Object value) 세션 속성 이름이 name인 속성에 value를 할당
Enumeration getAttributeNames() 세션 속성 이름을 Enumeration 객체 타입으로 반환
long getCreationTime() 세션이 생성된 시간을 반환.
1970년 1월 1일 ~ 현재까지 경과된 시간을 1/1000초로 반환
boolean isNew() 해당 세션이 처음 생성되었는지 여부 반환
invalidate() 세션 무효화. 모든 세션 데이터 제거
호출 후 같은 페이지에서 session 객체 사용 시 에러
long getLastAccessedTime() 해당 세션에 클라이언트가 마지막으로 request를 보낸 시간을 반환
long getCreationTime() 세션이 생성된 시간 반환
int getMaxInactiveInterval(int interval) 해당 세션을 유지하기 위한 시간 반환
setMaxInactiveInterval(int interval) 해당 세션을 유지하기 위한 시간을 초 단위로 설정
기본은 1800초
removeAttribute(String name) 세션 속성 이름이 name인 속성 제거

예제

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// 세션 속성 이름과 값 추가
	session.setAttribute("param1", "asdf");
	session.setAttribute("param2", "qwer");
	session.setAttribute("param3", "zxcv");

	// 세션 속성 이름 확인
	Enumeration<String> names = session.getAttributeNames();
	
	while(names.hasMoreElements()) {
		String key = names.nextElement();
		String value = (String)session.getAttribute(key);
		out.println(key + " = " + value + "<br>");
	}
	
	// 세션 지속시간 반환
	session.setMaxInactiveInterval(60*60*2);
	
	int seconds = session.getMaxInactiveInterval();
	
	out.println("세션 지속시간 : " + seconds);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session Test</title>
</head>
<body>
</body>
</html>

session.png